package com.lovo.boot.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.lovo.boot.exception.GlobalHandleException;
import com.lovo.boot.model.dos.StudentDO;
import com.lovo.boot.model.dto.StudentCourseDTO;
import com.lovo.boot.model.dto.StudentDTO;
import com.lovo.boot.model.query.StudentQuery;
import com.lovo.boot.model.vo.PageVO;

/**
 * @title 学生持久接口
 * @author luo
 * @since 2020-11-25
 */
public interface StudentService extends IService<StudentDO> {
    /**
     * 按学生编号查询学生
     * @param studentId 学生编号
     * @return 查询到的学生对象
     */
    StudentDO findByStudentId(String  studentId) throws GlobalHandleException;

    /**
     * 按学生编号删除学生
     * @param studentId 学生编号
     */
    void deleteStudent(String studentId) throws GlobalHandleException;

    /**
     * 添加学生
     * @param studentDTO 新的学生对象
     * @return 所添加的学生对象
     */
    StudentDO addStudent(StudentDTO studentDTO) throws GlobalHandleException;

    /**
     * 分页查询所有学生
     * @param studentQuery
     * @return
     */
    PageVO<StudentDO> findAllStudent(StudentQuery studentQuery);

    /**
     * 修改学生信息
     * @param studentDTO
     * @return
     */
    StudentDO updateStudent(StudentDTO studentDTO) throws GlobalHandleException;

    /**
     *  根据学生编号和课程编号集合选课
     * @param studentCourseDTO 学生编号和课程编号集合对象
     */
    void updateStudentCourse(StudentCourseDTO studentCourseDTO) throws GlobalHandleException;

}
